package com.studentSystemData;

import java.util.ArrayList;
import java.util.Scanner;

public class studentSystem {
    public static void main(String[] args) {

        //创建学生管理系统菜单：
        System.out.println("----------------欢迎进入学生管理系统----------------");

        Scanner sc = new Scanner(System.in);
        Student stu = new Student();

        ArrayList<Student> list = new ArrayList<Student>();
        loop:while(true) {
            System.out.println("1:添加学生");
            System.out.println("2:删除学生");
            System.out.println("3:修改学生");
            System.out.println("4:查询学生");
            System.out.println("5:退出");
            System.out.println("请输入你要执行的选项：");


            int choice = sc.nextInt();
            switch (choice) {
                case 1-> addStudent(list);
                case 2-> deleteStudent(list);
                case 3-> updateStudent(list);
                case 4-> queryStudent(list);
                case 5 -> {
                    break loop;
                }

                default -> System.out.println("输入错误，请重新输入:");
            }
        }

    }
    //添加学生的方法
    public static void addStudent(ArrayList<Student> list) {


            Scanner sc = new Scanner(System.in);


            System.out.println("请输入您要添加的学生的信息：");

            //创建学生对象：作用避免重复指向原对象地址
            Student stu = new Student();

            System.out.println("id：");
            String id  = sc.next();
            boolean flag =  contains(id,list);
            stu.setId(id);

            if(flag) {
                System.out.println("您输入的id已存在：");
                return;//表示id已存在，返回菜单
            }
            else {
                System.out.println("姓名：");
                String name = sc.next();
                stu.setName(name);

                System.out.println("性别：");
                String gender = sc.next();
                stu.setGender(gender);

                System.out.println("年龄：");
                int age = sc.nextInt();
                stu.setAge(age);

                System.out.println("工作地址：");
                String address = sc.next();
                stu.setAddress(address);

                list.add(stu);

            }
        System.out.println("添加学生成功：");


    }
    //删除学生的方法
    public static void deleteStudent(ArrayList<Student> list) {
        System.out.println("请输入你要删除的学生信息：");
        Scanner sc = new Scanner(System.in);
        String id = sc.next();
        int result = getId(list,id);
        if(result == -1) {
            System.out.println("输入的id" + id + "不存在");
            return;//表示不存在，返回主菜单
        }
        else {
            list.remove(result);
        }
        System.out.println("删除成功：！");

    }
    //修改学生的方法
    public static void updateStudent(ArrayList<Student> list) {
        Scanner sc = new Scanner(System.in);
        String id = sc.next();
        int result = getId(list,id);
        if(result == -1) {
            System.out.println("你输入的id：" + id + "不存在");
            return;
        }
        else {
            // 1. 获取要修改的学生对象（通过索引）
            Student stu = list.get(result);

            // 2. 提示用户输入新信息（保留原信息可选，这里直接覆盖）
            System.out.println("请输入新的姓名：");
            String name = sc.next();
            stu.setName(name); // 更新姓名

            System.out.println("请输入新的性别：");
            String gender = sc.next();
            stu.setGender(gender); // 更新性别

            System.out.println("请输入新的年龄：");
            int age = sc.nextInt();
            stu.setAge(age); // 更新年龄

            System.out.println("请输入新的工作地址：");
            String address = sc.next();
            stu.setAddress(address); // 更新地址

            // 3. 无需调用list.set()，因为stu是集合中对象的引用，修改属性会直接生效
            System.out.println("学生信息修改成功！");
        }
    }
    //查询学生的方法
    public static void queryStudent(ArrayList<Student> list) {
        if(list.size()==0) {
            System.out.println("当前无学生信息，请添加后在查询：");
        }
        else {
            System.out.println("id    名字   年龄  性别  工作地址    ");
            for (int i = 0; i < list.size(); i++) {
                System.out.print(list.get(i).getId()+"    "+list.get(i).getName()
                +"    "+list.get(i).getAge()+"    "+list.get(i).getGender()+"    "+
                        list.get(i).getAddress() );
                System.out.println();
            }

        }
    }
    //构造一个方法，保证id唯一
    public static boolean contains(String id, ArrayList<Student> list) {
        return getId(list,id)>0;
    }
    //再构造一个方法
    public static int getId(ArrayList<Student> list, String id) {
        for (int i = 0; i < list.size(); i++) {
            if(id.equals(list.get(i).getId()))
            {
                return i;
            }
        }
        return -1;
    }
}
